package com.santiao.youxiang.ui.activity

import android.content.Context
import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.util.Log
import android.widget.TextView
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import com.allen.library.shape.ShapeLinearLayout
import androidx.activity.viewModels
import com.gyf.immersionbar.ImmersionBar
//import com.lazyliuzy.commonui.ui.activity.Task3Activity
//import com.lazyliuzy.commonui.databinding.ActivityTask1Binding
//import com.lazyliuzy.commonui.utils.lzy.LZYADSUtils
import kotlin.apply
//import kotlin.jvm.java
import com.santiao.youxiang.bean.YibaoBean
//import com.santiao.youxiang.database.Bill
import com.santiao.youxiang.databinding.ActivityYibaoBiilBinding
import com.santiao.youxiang.ext.thrillClickListener
import com.santiao.youxiang.ui.fragment.HomeViewModel
import java.util.Calendar

class BillYibaoActivity: AppCompatActivity() {
    private lateinit var binding: ActivityYibaoBiilBinding
//    private lateinit var lzyadsUtils: com.lazyliuzy.commonui.utils.lzy.LZYADSUtils
var type_a="" //1 医保 2：社保

    var struri=""

    var groupedByMonth: Map<String, List<YibaoBean>>?=null

    private val HviewModel: HomeViewModel by viewModels()
    // 在类顶部定义
    val REQUEST_STORAGE_PERMISSION = 1001  // 可以是任意唯一整数

    companion object {
        // 定义一个静态方法来创建Intent
        // 定义一个静态方法来创建Intent并携带uri数据
        fun startActivity(context: Context?/*, type: String*/) {

            val intent = Intent(context, BillYibaoActivity::class.java).apply {

//                putExtra("uri", type)

            }

            context!!.startActivity(intent)
        }

    }

    @RequiresApi(Build.VERSION_CODES.O)
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityYibaoBiilBinding.inflate(layoutInflater)
        setContentView(binding?.root)
//        type_a= intent.getStringExtra("type").toString()

        initViews(type_a)
        ImmersionBar.with(this)
            .transparentStatusBar()
            .init()
        initdata()
//        Handler().postDelayed({
//            AdGMCPTwoUtils.initPreloading()
            initClick()
//        },1000)


    }



     fun initViews(type: String) {
        initad()
        binding.topBar.ivBack.setOnClickListener { onBackPressed() }
//         when(type){
//             "1"->{
//                 binding.topBar.tvTitle.text ="最低工资"
//             }
//             "2"->{
//                 binding.topBar.tvTitle.text ="缴纳比例"
//                 binding.ivBg.setImageResource(R.drawable.ic_mk_bg2)
//             }
//             "3"->{
//                 binding.topBar.tvTitle.text ="药品目录"
//                 binding.ivBg.setImageResource(R.drawable.ic_mk_bg3)
//                 binding.tvFile.visibility=View.VISIBLE
//                 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//                     initV()
//                 }
//             }
//             "4"->{
//                 binding.topBar.tvTitle.text ="生育津贴"
//                 binding.ivBg.setImageResource(R.drawable.ic_mk_bg4)
//                 binding.llContent.setBackgroundColor(Color.WHITE)
//             }
//
//         }


    }

    fun initClick(){

        binding!!.llAddFee.thrillClickListener {
//            AddBillActivity.startActivity(this@BillYibaoActivity,"1")
        }

        // 1. 计算当前月份 （Calendar.MONTH 从 0 开始，所以要 +1）
        val currentMonth = Calendar.getInstance().get(Calendar.MONTH) + 1

        // 2. 遍历 1 到 12 月，动态查找对应的 ll_monthX 视图并设置状态
        for (i in 1..12) {
            // 根据名称动态获取资源 id
            val resId = resources.getIdentifier("ll_month$i", "id", packageName)
            val resIdtv = resources.getIdentifier("tv_month$i", "id", packageName)
            // findViewById 或者如果你用的是 ViewBinding 用 binding.root.findViewById(...)
            val monthView = findViewById<ShapeLinearLayout>(resId) ?: continue
            val monthtv = findViewById<TextView>(resIdtv) ?: continue

            if (i <= currentMonth) {
                // 当月及以前，允许点击
//                monthView.isEnabled = true
//                monthView.alpha = 1f  // 恢复正常透明度
                monthView.thrillClickListener {
                    // 这里处理用户点击 月份 i 的逻辑



//                    BillDetailActivity.startActivity(this@BillYibaoActivity,"1","$i")
//                    Toast.makeText(this, "点击了 $i 月", Toast.LENGTH_SHORT).show()
                }

                var temp=0.0
                groupedByMonth?.forEach { (month, items) ->
                    Log.d("分组结果", "月：$month, 条数：${items.size}")
                    if (i==month.toInt()){

                        items.forEach { bean ->
                            temp +=bean.billAmount!!.toDouble()
                            Log.d("  条目", bean.toString())
                        }
                    }

                }

                monthtv.text=temp.toString()

            } else {
                // 未来月份，禁止点击／交互
//                monthView.isEnabled = false
//                monthView.alpha = 0.5f  // 半透明提示不可用
                monthView.setOnClickListener{
                    Toast.makeText(this, "还没到 $i 月", Toast.LENGTH_SHORT).show()
                }
            }
        }

    }





    fun   initad() {
//        myContext = requireContext()
//        lzyadsUtils=
//            com.lazyliuzy.commonui.utils.lzy.LZYADSUtils("Task1Activity", this@Task1Activity)
//        com.lazyliuzy.commonui.utils.lzy.LZYADSUtils.loadSimpleAd1(com.lazyliuzy.commonui.databinding.ActivityTask1Binding.flAd)
//        com.lazyliuzy.commonui.utils.lzy.LZYADSUtils.showAdCpTurn()

    }

    @RequiresApi(Build.VERSION_CODES.O)
    override fun onResume() {
        super.onResume()
        initdata()
    }

    @RequiresApi(Build.VERSION_CODES.O)
    fun initdata(){

        HviewModel.getDBYibao()

        HviewModel.yibaoData.observe(this/*.viewLifecycleOwner*/) { list ->
            // 1. 按月分组
           groupedByMonth/*: Map<String, List<YibaoBean>>*/ = list.groupBy { bean ->
                // 提取“月”部分：先去掉“年”，再去掉“月”之后的部分
                bean.BillDate!!.substringAfter("年")     // "06月15日"
                    .substringBefore("月")    // "06"
            }

            // groupedByMonth 的 key 是 "01","02",... "12"，value 是对应列表

            var  item1=0.0
            var  item2=0.0
            var  item3=0.0
            var  item4=0.0
            var total=0.0

            // 2. 示例：打印分组结果
            groupedByMonth?.forEach { (month, items) ->
                Log.d("分组结果", "月：$month, 条数：${items.size}")
                items.forEach { bean ->
                    when (bean.billType!!.toInt()){
                        1->{item1 +=bean.billAmount!!.toDouble()}
                        2->{item2 +=bean.billAmount!!.toDouble()}
                        3->{item3 +=bean.billAmount!!.toDouble()}
                        4->{item4 +=bean.billAmount!!.toDouble()}
                    }
                    Log.d("  条目", bean.toString())
                }
            }
            total=item1+item2+item3+item4
            binding.tvDialog.text="%.2f".format(item1)
            binding.tvHospital.text="%.2f".format(item2)
            binding.tvPill.text="%.2f".format(item3)
            binding.tvOther.text="%.2f".format(item4)

            if (total == 0.0) {
                // 没有数据时，显示 0.00%
                binding.tvDialogPercent.text="0%" /*(item1/total).toString()*/
                binding.tvHospitalPercent.text="0%"
                binding.tvPillPercent.text="0%"
                binding.tvOtherPercent.text="0%"
            }else{
                binding.tvDialogPercent.text="%.2f".format((item1/total)*100 )+ "%"  /*(item1/total).toString()*/
                binding.tvHospitalPercent.text="%.2f".format((item2/total)*100 )+ "%"
                binding.tvPillPercent.text="%.2f".format((item3/total)*100 )+ "%"
                binding.tvOtherPercent.text="%.2f".format((item4/total)*100 )+ "%"

            }


            initClick()
            // 3. 如果你要把分好组的数据展示到 UI —— 比如放到 RecyclerView 的多组列表里
            //    你可以把 groupedByMonth 转成一个有顺序的 List<Pair<String,List<YibaoBean>>>：
//            val sortedMonths = groupedByMonth.keys.sorted()  // ["01","02",...]
//            val sections = sortedMonths.map { month ->
//                Section(month, groupedByMonth[month] ?: emptyList())
//            }

            //    然后交给你的 Adapter，以 Section 形式展现
            //    adapter.submitList(sections)
        }

    }

    data class Section(
        val month: String,
        val items: List<YibaoBean>
    )

}